#include <iostream>
#include <vector>
using namespace std;
#include <boost/pointee.hpp>
#include <boost/type_traits.hpp>
#include <boost/shared_ptr.hpp>
using namespace boost;

int main()
{
    cout << "--- Start ---" << endl;

    cout << is_same<pointee<int*>::type, int>::value << endl;
    cout << is_same<pointee<shared_ptr<string> >::type, double>::value << endl;
    //cout << is_same<pointee<double&>::type, double>::value << endl;
    cout << is_same<pointee<vector<double>* >::type, vector<double> >::value << endl;
    cout << "--- End ---" << endl;
    return 0;
}
